package com.eastfair.venueservice.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.venueservice.dto.ExhibitionSpaceDrawingDTO;
import com.eastfair.venueservice.entity.ExhibitionSpaceDrawing;
import com.eastfair.venueservice.entity.HomeBuilderDrawingCategoryAudit;
import com.eastfair.venueservice.entity.VenueDrawingCategoryAudit;
import com.eastfair.venueservice.vo.ExhibitionSpaceDrawingVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 展会展厅图纸
 * </p>
 *
 * @author dqq
 * @date 2022 -11-03
 */
public interface ExhibitionSpaceDrawingService extends SuperService<ExhibitionSpaceDrawing> {

    /**
     * 查询展会展厅图纸VO.
     *
     * @param query the query
     * @return the list
     */
    List<ExhibitionSpaceDrawingVO> listExhibitionSpaceDrawingVO(ExhibitionSpaceDrawingDTO query);

    /**
     * 查询展会展厅图纸.
     *
     * @param query the query
     * @return the list
     */
    List<ExhibitionSpaceDrawing> listExhibitionSpaceDrawing(ExhibitionSpaceDrawingDTO query);

    /**
     * 保存展会展厅图纸.
     *
     * @param exhibitionSpaceDrawingDTO the exhibition space drawing dto
     * @return the exhibition space drawing
     */
    ExhibitionSpaceDrawing saveExhibitionSpaceDrawing(ExhibitionSpaceDrawingDTO exhibitionSpaceDrawingDTO);

    /**
     * 批量保存展会展厅图纸.
     *
     * @param list the list
     * @return the boolean
     */
    boolean saveBatch(List<ExhibitionSpaceDrawingDTO> list);

    /**
     * 批量保存同一展会展厅图纸类型下的展会展厅图纸.
     *
     * @param list               the list
     * @param exhibitionManageId the exhibition manage id
     * @param spaceCode          the space code
     * @param drawingId          the drawing id
     * @return the boolean
     */
    boolean saveBatch(List<ExhibitionSpaceDrawingDTO> list, Long exhibitionManageId, String spaceCode, Long drawingId);

    /**
     * 批量保存.
     *
     * @param venueDrawingCategoryAudit the venue drawing category audit
     * @return the boolean
     */
    boolean saveBatchByVenueDrawing(VenueDrawingCategoryAudit venueDrawingCategoryAudit);

    /**
     * 批量保存.
     *
     * @param list the home builder drawing category audit
     * @return the boolean
     */
    boolean saveBatchByHomeBuilderDrawingCategoryAudit(List<HomeBuilderDrawingCategoryAudit> list);

    /**
     * 移除展会的展厅的指定图纸类型的图纸.
     *
     * @param exhibitionManageId the exhibition manage id
     * @param spaceCode          the space code
     * @param drawingId          the drawing id
     * @return the boolean
     */
    boolean removeByExhibitionManageId(Long exhibitionManageId, String spaceCode, Long drawingId);

    /**
     * 图纸url列表删除.
     *
     * @param imageUrls the image urls
     * @return the boolean
     */
    boolean removeByImageUrl(List<String> imageUrls);
}
